﻿using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace AMAP.Areas.Supplier.Models.Account
{
    public class SupplierAccountCreateViewModel
    {
        #region User Informations
        [Required]
        [Email(ErrorMessage = "Veuillez entrer une adresse mail au bon format : xte@exemple.com")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "E-mail", Prompt = "Adresse e-mail")]
        [MaxLength(100, ErrorMessage = "Le nombre de caractère doit être inférieur à 100")]
        [Remote("IsEmailAvailable", "Authentication", "Public", ErrorMessage = "Cette adresse e-mail est déjà utilisée")]
        public string Email { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Mot de passe", Prompt = "Mot de passe")]
        [MinLength(6, ErrorMessage = "Le mot de passe doit être supérieur à 6 caractère")]
        [MaxLength(20, ErrorMessage = "Le nombre de caractère doit être inférieur à 6 caractère")]
        public string Password { get; set; }

        [Compare("Password", ErrorMessage = "Les mots de passe doivent correspondre")]
        [DataType(DataType.Password)]
        [Display(Name = "Confirmation du mot de passe", Prompt = "Confirmation")]
        public string PasswordConfirmation { get; set; }
        #endregion

        #region Supplier Personnel Informations
        [Required]
        [Display(Name = "Nom", Prompt = "Nom de famille")]
        [MaxLength(50, ErrorMessage = "Le nombre de caractère doit être inférieur à 50")]
        public string LastName { get; set; }

        [Required]
        [Display(Name = "Prénom", Prompt = "Votre prénom")]
        [MaxLength(50, ErrorMessage = "Le nombre de caractère doit être inférieur à 50")]
        public string FirstName { get; set; }
        #endregion

        #region Supplier Informations
        [Required]
        [Display(Name = "Numéro de SIRET", Prompt = "N° SIRET")]
        [MaxLength(14, ErrorMessage = "Le numéro de SIRET doit être composé de 14 caractères")]
        [MinLength(14, ErrorMessage = "Le numéro de SIRET doit être composé de 14 caractères")]
        public string SIRET { get; set; }

        [Required]
        [Display(Name = "Nom de la société", Prompt = "Nom de la société")]
        [MaxLength(50, ErrorMessage = "Le nombre de caractère doit être inférieur à 50")]
        public string CompanyName { get; set; }
        #endregion

        #region Supplier Address
        [Required]
        [Display(Name = "Numéro et nom de rue de la société", Prompt = "Adresse")]
        [MaxLength(100, ErrorMessage = "Le nombre de caractère doit être inférieur à 100")]
        public string Address1 { get; set; }

        [Display(Name = "Complément d'adresse", Prompt = "Complément d'adresse")]
        [MaxLength(100, ErrorMessage = "Le nombre de caractère doit être inférieur à 100")]
        public string Address2 { get; set; }

        [Required]
        [Display(Name = "Code postal", Prompt = "Code postal")]
        [MaxLength(5, ErrorMessage = "Le code postal doit être composé de 5 chiffres")]
        [MinLength(5, ErrorMessage = "Le code postal doit être composé de 5 chiffres")]
        public string PostalCode { get; set; }

        [Required]
        [Display(Name = "Ville", Prompt = "Ville")]
        [MaxLength(50, ErrorMessage = "Le nombre de caractère doit être inférieur à 50")]
        public string City { get; set; }

        [Required]
        [Display(Name = "Numéro de téléphone", Prompt = "Téléphone")]
        [MaxLength(13, ErrorMessage = "Le numéro de téléphone doit être inférieur à 13")]
        [MinLength(10, ErrorMessage = "Le numéro de téléphone doit être supérieur à 10")]
        public string PhoneNumber { get; set; }

        #endregion

        public Domain.Amap ClosestAmap { get; set; }

        public Domain.Amap WantedAmap { get; set; }

        public Domain.Supplier FailSupplier { get; set; }
    }
}